Microprocessors have permitted a proliferation of devices which perform dedicated tasks for particular applications. In some of these applications the microprocessor's function may be altered by a user and in others it is not. For example, microprocessors used in automobiles to control fuel flow and ignition timing are typically sealed in an ignition control module while microprocessors used in microwave ovens to control cooking times and radiation power require parameters from a user typically input through a keypad. Devices of the latter type typically include a display for providing visual feedback of a users input to the microprocessor or computer system. Additionally, some microprocessors are used in handheld terminals which are carried to remote locations for the input of data, such as utility meter reading and the like. These devices sometimes include hard copy output to record the contents of an internal memory in the device.
One example of a computer system which uses a microprocessor to perform a dedicated function is a terminal for verifying credit or debit cards. Typically, these terminals include a housing for a microprocessor, memory, and I/O interfaces. The terminal also usually includes a ten key pad for inputting information or, alternatively, a card swipe slot for reading the magnetic identification of the card. Typically, data regarding the transaction is transmitted over a telephone line to a remote site for a credit authorization. These devices may further include a printer for printing out a charge card invoice for execution by the consumer. Thus, the typical credit card verification terminal has a central processing unit (the microprocessor), internal program and data memories, a ten keypad, a telecommunication port, and an input/output (I/O) port for interfacing a local peripheral, such as a printer, to the terminal.
One advantage of computer systems which perform dedicated functions is the ease in which the functions performed by the system may be modified. To modify or augment the functionality of a dedicated system, an additional application program may be loaded into memory through a telecommunication link (if coupled to the terminal) or the memory device which contains the control program for the system may be replaced with another memory device which contains an updated program. While the program that controls the system may be easily modified, the user interface remains limited. For example, in the verification terminal discussed above, the user is limited to the numeric input possible through the ten keypad. Thus, while the program which controls the system may be easily updated to perform additional functionality, the improved functionality is limited in the type of user interaction which may be received and used.
One possible solution which adds other user interface capability to the system is to use the I/O port through which the system communicates with the printer. Such a port may be used to communicate with a conventional keyboard, commonly known as a QWERTY keyboard. However, the connector for the cable which connects the printer to the terminal would have to be removed so the keyboard could be coupled to the system. As a result, when the keyboard is coupled to the terminal the printer cannot be used and vice versa.
What is needed is a way to expand the I/O interface so more than one computer peripheral may be coupled to the microprocessor terminal without interfering with the operation of another computer peripheral coupled to the same interface.